	.text
	.align 4

	.globl ackman

ackman : 
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	movl	8(%ebp), %eax
	cmpl	$0, %eax
	sete	%al
	movzbl	%al, %eax
	movl	%eax, %ecx
	cmpl	$0, %ecx
	jne	L..16
	jmp	L..17
L..16 : 
	movl	12(%ebp), %ecx
	addl	$1, %ecx
	movl	%ecx, %ecx
	jmp	L..14
L..17 : 
	movl	12(%ebp), %eax
	cmpl	$0, %eax
	sete	%al
	movzbl	%al, %eax
	movl	%eax, %edx
	cmpl	$0, %edx
	jne	L..20
	jmp	L..21
L..20 : 
	movl	8(%ebp), %edx
	subl	$1, %edx
	pushl	$1
	pushl	%edx
	call	ackman
	addl	$8, %esp
	movl	%eax, %edx
	movl	%edx, %ecx
	jmp	L..14
L..21 : 
	movl	12(%ebp), %edx
	subl	$1, %edx
	pushl	%edx
	pushl	8(%ebp)
	call	ackman
	addl	$8, %esp
	movl	%eax, %edx
	movl	8(%ebp), %esi
	subl	$1, %esi
	pushl	%edx
	pushl	%esi
	call	ackman
	addl	$8, %esp
	movl	%eax, %edx
	movl	%edx, %ecx
	jmp	L..14
L..14 : 
	movl	%ecx, %eax
	popl	%edi
	popl	%esi
	popl	%ebx
	movl	%ebp, %esp
	popl	%ebp
	ret

	.globl main

main : 
	pushl	%ebp
	movl	%esp, %ebp
	pushl	%ebx
	pushl	%esi
	pushl	%edi
	pushl	$10
	pushl	$3
	call	ackman
	addl	$8, %esp
	movl	%eax, %ecx
	pushl	%ecx
	call	print
	addl	$4, %esp
	jmp	L..31
L..31 : 
	movl	$0, %eax
	popl	%edi
	popl	%esi
	popl	%ebx
	movl	%ebp, %esp
	popl	%ebp
	ret



	.data
	.align 4

